home *** CD-ROM | disk | FTP | other *** search
/ Aminet 4 / Aminet 4 - November 1994.iso / aminet / dev / gui / guienv372.lha / GUIEnvironment / SASC / Include / guienv.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-09-15  |  19.0 KB  |  505 lines

  1. #ifndef LIBRARIES_GUIENV_H
  2. #define LIBRARIES_GUIENV_H TRUE
  3.  
  4. /* **************************************************************************
  5.  
  6. $RCSfile: guienv.h $
  7.  
  8. $Revision: 1.3 $
  9.     $Date: 1994/09/14 20:00:37 $
  10.  
  11.     GUIEnvironment V37.2 library structures, constants and definitions
  12.  
  13.     SAS/C V6.51
  14.  
  15.   Copyright © 1994, Carsten Ziegeler
  16.                     Augustin-Wibbelt-Str.7, 33106 Paderborn, Germany
  17.  
  18.  
  19. *************************************************************************** */
  20.  
  21. #ifndef EXEC_TYPES_H
  22. #include <exec/types.h>
  23. #endif
  24.  
  25. #ifndef GRAPHICS_TEXT_H
  26. #include <graphics/text.h>
  27. #endif
  28.  
  29. #ifndef INTUITION_INTUITION_H
  30. #include <intuition/intuition.h>
  31. #endif
  32.  
  33. #ifndef LIBRARIES_LOCALE_H
  34. #include <libraries/locale.h>
  35. #endif
  36.  
  37. /* ======================================================================= */
  38. /*                              Constants                                  */
  39. /* ======================================================================= */
  40.  
  41. #define GUIEnvName "guienv.library"
  42. #define GUIEnvMinVersion 37
  43.  
  44. /* ======================================================================= */
  45. /*                               Error codes                               */
  46. /* ======================================================================= */
  47.  
  48. #define GE_Done                 0   /* no error, everything done */
  49. #define GE_MemoryErr            1   /* not enough memory */
  50. #define GE_WindowErr            2   /* no window specified */
  51. #define GE_VisualInfoErr        3   /* couldn't get VisualInfo */
  52. #define GE_DrawInfoErr          4   /* couldn't get DrawInfo */
  53.  
  54. #define GE_GadContextErr      100   /* GadTools CreateContext failed */
  55. #define GE_GadCreateErr       101   /* error calling CreateGadget/NewObject */
  56. #define GE_GadTooManyErr      102   /* more than 256 gadgets */
  57. #define GE_GadKeyTwiceErr     103   /* same key equivalent for two gadgets */
  58. #define GE_GadUnknownKind     104   /* unknown gadget kind */
  59. #define GE_GadChainErr        105   /* ChainStart/ChainEnd missing */
  60. #define GE_GadHookErr         106   /* Hook function failed */
  61.  
  62.  
  63. #define GE_MenuCreateErr      200   /* error calling CreateMenu */
  64. #define GE_MenuStripErr       201   /* error calling SetMenuStrip */
  65. #define GE_MenuLayoutErr      202   /* error calling LayoutMenus */
  66. #define GE_MenuTooManyErr     203   /* more than 256 menu items */
  67.  
  68.  
  69. /* ======================================================================= */
  70. /*                         GE Hook functions                               */
  71. /* ======================================================================= */
  72.  
  73. /* The GUIEnvironment hook functions:
  74.    - The hook functions are implemented as amiga callback hooks as
  75.      documented in the Utilities documentation
  76.    - Before a hook functions is called, the A4 register is set
  77.    - The A0 register points to Hook structure
  78.    - The A1/A2 register are used as stated below
  79.  
  80. */
  81.  
  82. /* ------------------------ return values -------------------------------- */
  83.  
  84. #define GEH_KeyShifted    512
  85. #define GEH_KeyUnknown    -1
  86.  
  87. /* ------------------------ The hook functions ---------------------------
  88.  
  89.             Hook function for key equivalents:
  90.  
  91.               A1      : Currently unused, set to NULL
  92.               A2      : LONG : The ASCII character code
  93.               RESULT  : LONG : gehKeyUnknown if the key is not a key
  94.                                   equivalent or the number of the gadget,
  95.                                   or the number of the gadget plus
  96.                                   gehKeyShifted !
  97.  
  98.             Handle message hook
  99.  
  100.               A1, A2  : Currently unused, set to NULL
  101.               RESULT  : LONG, handled as boolean
  102.                         Return TRUE, if GUIEnv should not work on the
  103.                         message anymore, otherwise FALSE
  104.  
  105.             Refresh hook
  106.  
  107.               A1, A2  : Currently unused, set to NULL
  108.               RESULT  : Currently unused, set this always to 0 !
  109.  
  110.  
  111.             Gadget event message hook
  112.  
  113.               A2      : Pointer to event gadget
  114.               A1      : Currently unused, set to NULL
  115.               RESULT  : LONG, handled as boolean
  116.                         If you want to wait for further messages return
  117.                         TRUE, otherwise FALSE to exit the message-loop.
  118.  
  119.             Menu event message hook
  120.  
  121.               A2      : Pointer to event menu item (if possible)
  122.               A1      : Currently unused, set to NULL
  123.               RESULT  : LONG, handled as boolean
  124.                         If you want to wait for further messages return
  125.                         TRUE, otherwise FALSE to exit the message-loop.
  126.  
  127.             Gadget creation hook
  128.  
  129.               A2      : Pointer to event gadget
  130.               A1      : Currently unused, set to NULL
  131.               RESULT  : LONG, handled as boolean
  132.                         If your creation hook has done his work, return
  133.                         TRUE, otherwise FALSE to stop creation !
  134.  
  135.  
  136. */
  137.  
  138. /* ======================================================================= */
  139. /*                               Gadgets                                   */
  140. /* ======================================================================= */
  141.  
  142. /* ----------------------- gadget kinds ---------------------------------- */
  143.  
  144. #define GEG_Kinds                    65535 /* GUIEnv gadgets */
  145. #define GEG_ProgressIndicatorKind    65536
  146. #define GEG_BevelboxKind             65537
  147. #define GEG_BorderKind               65538
  148.  
  149. #define GEG_BOOPSIKinds             131071 /* BOOPSI gadgets */
  150. #define GEG_BOOPSIPublicKind        131072
  151. #define GEG_BOOPSIPrivateKind       131073
  152.  
  153. /* ----------------------- gadget chain flags ---------------------------- */
  154.  
  155. #define GEG_ChainUpNext     1   /* Flags, 16 bits */
  156. #define GEG_ChainUpPrev     2
  157. #define GEG_ChainDownNext   4
  158. #define GEG_ChainDownPrev   8
  159.  
  160. /* ----------------------- gadget description flags ---------------------- */
  161.  
  162. #define GEG_DistNorm       0  /* Normal distance */
  163. #define GEG_DistAbs        1  /* absolute distance from an object */
  164. #define GEG_DistRel        2  /* relative distance from an object */
  165. #define GEG_DistPercent    3  /* percentual distance */
  166.  
  167. #define GEG_ObjBorder      0  /* window border */
  168. #define GEG_ObjGadget      4  /* gadget (standard is previous gadget) */
  169.  
  170. #define GEG_ObjRight       0  /* distance from which part of the object */
  171. #define GEG_ObjBottom      0
  172. #define GEG_ObjLeft       32
  173. #define GEG_ObjTop        32
  174.  
  175. /* ----------------------- gadget tag values ----------------------------- */
  176.  
  177. #define GEG_ACTIVATIONUP     0
  178. #define GEG_ACTIVATIONDOWN   1
  179.  
  180.  
  181. #define GEG_ALLGADGETS      -1
  182.  
  183. /* ----------------------- gadget tags ----------------------------------- */
  184.  
  185. #define GEG_Base            (TAG_USER + 0x16000)
  186. #define GEG_Text            (GEG_Base +  1)
  187. #define GEG_Flags           (GEG_Base +  2)
  188. #define GEG_Font            (GEG_Base +  3)
  189. #define GEG_UserData        (GEG_Base +  4)
  190. #define GEG_Description     (GEG_Base +  5)
  191. #define GEG_Objects         (GEG_Base +  6)
  192. #define GEG_GuideNode       (GEG_Base +  7)
  193. #define GEG_CatalogString   (GEG_Base + 10)
  194. #define GEG_Class           (GEG_Base + 11)
  195. #define GEG_VarAddress      (GEG_Base + 12)
  196. #define GEG_HandleInternal  (GEG_Base + 13)
  197. #define GEG_StartChain      (GEG_Base + 14)
  198. #define GEG_EndChain        (GEG_Base + 15)
  199. #define GEG_Activate        (GEG_Base + 16)
  200. #define GEG_ChainActivation (GEG_Base + 17)
  201. #define GEG_Status          (GEG_Base + 19)
  202. #define GEG_UpAHook         (GEG_Base + 20)
  203. #define GEG_DownAHook       (GEG_Base + 21)
  204. #define GEG_CreationAHook   (GEG_Base + 22)
  205.  
  206. #define GEG_PIMaxValue      (GEG_Base + 50)
  207. #define GEG_PICurrentValue  (GEG_Base + 51)
  208. #define GEG_BBRecessed      (GEG_Base + 52)
  209.  
  210. #define GEG_Disable         (GEG_Base + 100)
  211. #define GEG_Enable          (GEG_Base + 101)
  212. #define GEG_SetVar          (GEG_Base + 102)
  213. #define GEG_GetVar          (GEG_Base + 103)
  214. #define GEG_ActivateUp      (GEG_Base + 104)
  215. #define GEG_ActivateDown    (GEG_Base + 105)
  216.  
  217. #define GEG_Address         (GEG_Base + 200)
  218. #define GEG_LeftEdge        (GEG_Base + 201)
  219. #define GEG_TopEdge         (GEG_Base + 202)
  220. #define GEG_Width           (GEG_Base + 203)
  221. #define GEG_Height          (GEG_Base + 204)
  222. #define GEG_Redraw          (GEG_Base + 205)
  223.  
  224. /* ----------------------- GUIGadgetInfo structure ------------------------ */
  225.  
  226. struct GUIGadgetInfo      /* a pointer to this structure is stored in
  227.                              gadget->UserData */
  228. {
  229.   APTR userData;          /* use this for own user data */
  230.   LONG kind;              /* gadget kind */
  231.  
  232.   APTR gadgetClass;       /* The BOOPSI Gadget Class */
  233.  
  234.   struct Hook *functionUp, *functionDown;
  235.  
  236.   STRPTR guideNode;       /* The AmigaGuide node for this gadget */
  237.  
  238. };
  239.  
  240.  
  241. /* ======================================================================= */
  242. /*                             Menu Items                                  */
  243. /* ======================================================================= */
  244.  
  245. /* ---------------------- menu item tags --------------------------------- */
  246.  
  247. #define GEM_Base            (TAG_USER + 0x18000)
  248. #define GEM_UserData        (GEM_Base + 1)
  249. #define GEM_GuideNode       (GEM_Base + 3)
  250. #define GEM_CatalogString   (GEM_Base + 4)
  251. #define GEM_ShortCut        (GEM_Base + 5)
  252. #define GEM_Flags           (GEM_Base + 6)
  253. #define GEM_MutualExclude   (GEM_Base + 7)
  254. #define GEM_AHook           (GEM_Base + 8)
  255.  
  256. /* ---------------------- GUIMenuInfo structure -------------------------- */
  257.  
  258.  
  259. struct GUIMenuInfo        /* a pointer to this structure is stored in
  260.                               menuitem^.userData */
  261. {
  262.   APTR userData;          /* use this for own user data */
  263.  
  264.   struct Hook *function;
  265.  
  266.   STRPTR guideNode;       /* The AmigaGuide node for this menuitem */
  267.  
  268. };
  269.  
  270.  
  271. /* ======================================================================= */
  272. /*                            GUIInfo                                      */
  273. /* ======================================================================= */
  274.  
  275. /* -------------------------- GUIInfo structure -------------------------- */
  276.  
  277.  
  278. struct GUIInfo {
  279.  
  280.   struct Window *window;            /* pointer to the used Window */
  281.   struct Screen *screen;            /* pointer to window's screen */
  282.   APTR   visualInfo;                /* Pointer to screen's VisualInfo */
  283.   struct DrawInfo *drawInfo;        /* pointer to a copy of DrawInfo */
  284.   struct Locale *localeInfo;        /* pointer to locale environment */
  285.  
  286.   struct TextAttr *menuFont;        /* pointer to menu-font. Is set to
  287.                                        screens font. */
  288.  
  289.   WORD creationWidth;               /* window inner width */
  290.   WORD creationHeight;              /* window inner height */
  291.  
  292.   struct MsgPort *msgPort;          /* Pointer to IDCMP-Port */
  293.  
  294.   struct IntuiMessage *intuiMsg;    /* Points to a copy of the
  295.                                        FULL IntuiMessage even if it
  296.                                        is extended (OS3.0+) */
  297.  
  298.  /* Additional information about the message: */
  299.   ULONG msgClass;
  300.  
  301.   WORD  msgCode;
  302.   UBYTE msgBoolCode;                /* This should be BOOL, but we have
  303.                                        only 1 byte and BOOL needs 2 bytes */
  304.   char  msgCharCode;
  305.  
  306.   struct Gadget *msgGadget;
  307.  
  308.   struct MenuItem *msgItemAdr;
  309.  
  310.   WORD msgGadNbr;
  311.  
  312.   WORD msgMenuNum;
  313.   WORD msgItemNum;
  314.   WORD msgSubNum;
  315.  
  316.  
  317.  /* Some user stuff: */
  318.   APTR userData;                    /* for own data */
  319.   APTR compilerReg;                 /* for compiler data reg */
  320.  
  321.   STRPTR gadgetGuide;               /* name & path for the guide */
  322.   STRPTR menuGuide;                 /* name & path for the guide */
  323.  
  324.   struct Catalog *catalogInfo;      /* points to the catalog given
  325.                                        with the GUI_CatalogFile tag */
  326.  
  327.   LONG gadgetCatalogString;         /* The number of the next string */
  328.   LONG menuCatalogString;           /* in the catalog */
  329.  
  330.   struct Hook *vanKeyHook;                  /* Hook functions */
  331.   struct Hook *handleMsgHook;
  332.   struct Hook *refreshHook;
  333.  
  334.   APTR   hookInterface;
  335.  
  336.   struct TextAttr *creationFont;    /* GUIDefinition: text/gadget font */
  337.   struct TextAttr *textFont;        /* Font for gadgets and text */
  338. };
  339.  
  340.  
  341. /* --------------------------- GUI Tags ------------------------------------ */
  342.  
  343. #define GUI_Base                (TAG_USER + 0x15000)
  344. #define GUI_TextFont            (GUI_Base +  1)
  345. #define GUI_MenuFont            (GUI_Base +  2)
  346. #define GUI_CreateError         (GUI_Base +  4)
  347. #define GUI_UserData            (GUI_Base +  5)
  348. #define GUI_CompilerReg         (GUI_Base +  6)
  349. #define GUI_GadgetGuide         (GUI_Base +  8)
  350. #define GUI_MenuGuide           (GUI_Base +  9)
  351. #define GUI_CatalogFile         (GUI_Base + 10)
  352. #define GUI_GadgetCatalogOffset (GUI_Base + 11)
  353. #define GUI_MenuCatalogOffset   (GUI_Base + 12)
  354. #define GUI_CreationWidth       (GUI_Base + 13)
  355. #define GUI_CreationHeight      (GUI_Base + 14)
  356. #define GUI_MsgPort             (GUI_Base + 16)
  357. #define GUI_RefreshAHook        (GUI_Base + 17)
  358. #define GUI_HandleMsgAHook      (GUI_Base + 18)
  359. #define GUI_VanKeyAHook         (GUI_Base + 19)
  360. #define GUI_HookInterface       (GUI_Base + 20)
  361. #define GUI_CreationFont        (GUI_Base + 21)
  362. #define GUI_PreserveWindow      (GUI_Base + 22)
  363.  
  364. #define GUI_RemoveMenu          (GUI_Base + 100)
  365. #define GUI_RemoveGadgets       (GUI_Base + 101)
  366. #define GUI_ClearWindow         (GUI_Base + 102)
  367. #define GUI_EmptyMsgPort        (GUI_Base + 103)
  368.  
  369.  
  370. /* ======================================================================= */
  371. /*                             Requester                                   */
  372. /* ======================================================================= */
  373.  
  374. /* -------------------- Requester kinds ---------------------------------- */
  375.  
  376. #define GER_GeneralKind   0
  377. #define GER_OKKind        1
  378. #define GER_DoItKind      2
  379. #define GER_YNCKind       3
  380. #define GER_FileKind      4
  381. #define GER_DirKind       5
  382.  
  383.  
  384. /* --------------------- Return values ----------------------------------- */
  385.  
  386. #define GER_Cancel   0   /* GER_YNCKind / GER_DoItKind / GER_OKKind /
  387.                             GER_FileKind / GER_DirKind */
  388.  
  389. #define GER_Yes      1   /* GER_YNCKind / GER_DoItKind / GER_FileKind /
  390.                             GER_DirKind */
  391.  
  392. #define GER_No       2   /* GER_YNCKind */
  393.  
  394.  
  395. /* --------------------- Requester tags ---------------------------------- */
  396.  
  397. #define GER_Base           (TAG_USER + 0x17000)
  398. #define GER_Gadgets        (GER_Base +  1)
  399. #define GER_Args           (GER_Base +  2)
  400. #define GER_Flags          (GER_Base +  3)
  401. #define GER_Title          (GER_Base +  4)
  402. #define GER_IDCMP          (GER_Base +  5)
  403. #define GER_Pattern        (GER_Base +  6)
  404. #define GER_NameBuffer     (GER_Base +  7)
  405. #define GER_FileBuffer     (GER_Base +  8)
  406. #define GER_DirBuffer      (GER_Base +  9)
  407. #define GER_Save           (GER_Base + 10)
  408. #define GER_LocaleID       (GER_Base + 11)
  409.  
  410. /* ======================================================================= */
  411. /*                              Windows                                    */
  412. /* ======================================================================= */
  413.  
  414. /* ---------------------- window tags ------------------------------------ */
  415.  
  416. #define GEW_Base            (TAG_USER + 0x19000)
  417. #define GEW_OuterSize       (GEW_Base + 1)
  418.  
  419.  
  420. /* ======================================================================= */
  421. /*                            Library functions                            */
  422. /* ======================================================================= */
  423.  
  424. /* --------- protos ------------- */
  425.  
  426. struct TextFont *OpenGUIFont( STRPTR, WORD, struct TextAttr * );
  427. VOID CloseGUIFont( struct TextFont * );
  428. struct Screen *OpenGUIScreenA( ULONG, WORD, STRPTR, struct TextAttr *,
  429.                                struct TagItem * );
  430. struct Screen *OpenGUIScreen( ULONG, WORD, STRPTR, struct TextAttr *,
  431.                               ULONG, ... );
  432. struct Window *OpenGUIWindowA( WORD, WORD, WORD, WORD, STRPTR, ULONG,
  433.                                ULONG, struct Screen *, struct TagItem * );
  434. struct Window *OpenGUIWindow( WORD, WORD, WORD, WORD, STRPTR, ULONG,
  435.                               ULONG, struct Screen *, ULONG, ... );
  436. VOID CloseGUIWindow( struct Window * );
  437. VOID CloseGUIScreen( struct Screen * );
  438. struct GUIInfo *CreateGUIInfoA( struct Window *, struct TagItem * );
  439. struct GUIInfo *CreateGUIInfo( struct Window *, ULONG, ... );
  440. VOID FreeGUIInfo( struct GUIInfo * );
  441. WORD DrawGUIA( struct GUIInfo *, struct TagItem * );
  442. WORD DrawGUI( struct GUIInfo *, ULONG, ... );
  443. WORD ChangeGUIA( struct GUIInfo *, struct TagItem * );
  444. WORD ChangeGUI( struct GUIInfo *, ULONG, ... );
  445. VOID CreateGUIGadgetA( struct GUIInfo *, WORD, WORD, WORD, WORD, LONG,
  446.                        struct TagItem * );
  447. VOID CreateGUIGadget( struct GUIInfo *, WORD, WORD, WORD, WORD, LONG,
  448.                       ULONG, ... );
  449. VOID CreateGUIMenuEntryA( struct GUIInfo *, BYTE, STRPTR, struct TagItem * );
  450. VOID CreateGUIMenuEntry( struct GUIInfo *, BYTE, STRPTR, ULONG, ... );
  451. VOID WaitGUIMsg( struct GUIInfo * );
  452. BOOL GetGUIMsg( struct GUIInfo * );
  453. VOID SetGUIGadgetA( struct GUIInfo *, WORD, struct TagItem * );
  454. VOID SetGUIGadget( struct GUIInfo *, WORD, ULONG, ... );
  455. LONG GetGUIGadget( struct GUIInfo *, WORD, ULONG);
  456. VOID GUIGadgetActionA( struct GUIInfo *, struct TagItem * );
  457. VOID GUIGadgetAction( struct GUIInfo *, ULONG, ... );
  458. LONG GUIRequestA( struct GUIInfo *, STRPTR, LONG, struct TagItem * );
  459. LONG GUIRequest( struct GUIInfo *, STRPTR, LONG, ULONG, ... );
  460. WORD ShowGuideNodeA( struct GUIInfo *, STRPTR, STRPTR, struct TagItem * );
  461. WORD ShowGuideNode( struct GUIInfo *, STRPTR, STRPTR, ULONG, ... );
  462. STRPTR GetCatStr( struct GUIInfo *, LONG, STRPTR );
  463. STRPTR GetLocStr( struct GUIInfo *, LONG, STRPTR );
  464.  
  465.  
  466. /* --------- pragmas ------------ */
  467.  
  468. extern struct Library *GUIEnvBase;
  469.  
  470. #pragma libcall GUIEnvBase OpenGUIFont 1e 90803
  471. #pragma libcall GUIEnvBase CloseGUIFont 24 801
  472. #pragma libcall GUIEnvBase OpenGUIScreenA 2a 981004
  473. #pragma tagcall GUIEnvBase OpenGUIScreen  2a 981004
  474. #pragma libcall GUIEnvBase OpenGUIWindowA 30 A9548321009
  475. #pragma tagcall GUIEnvBase OpenGUIWindow  30 A9548321009
  476. #pragma libcall GUIEnvBase CloseGUIWindow 36 801
  477. #pragma libcall GUIEnvBase CloseGUIScreen 3c 801
  478. #pragma libcall GUIEnvBase CreateGUIInfoA 42 9802
  479. #pragma tagcall GUIEnvBase CreateGUIInfo  42 9802
  480. #pragma libcall GUIEnvBase FreeGUIInfo 48 801
  481. #pragma libcall GUIEnvBase DrawGUIA 4e 9802
  482. #pragma tagcall GUIEnvBase DrawGUI  4e 9802
  483. #pragma libcall GUIEnvBase ChangeGUIA 54 9802
  484. #pragma tagcall GUIEnvBase ChangeGUI  54 9802
  485. #pragma libcall GUIEnvBase CreateGUIGadgetA 5a 943210807
  486. #pragma tagcall GUIEnvBase CreateGUIGadget  5a 943210807
  487. #pragma libcall GUIEnvBase CreateGUIMenuEntryA 60 A90804
  488. #pragma tagcall GUIEnvBase CreateGUIMenuEntry  60 A90804
  489. #pragma libcall GUIEnvBase WaitGUIMsg 66 801
  490. #pragma libcall GUIEnvBase GetGUIMsg 6c 801
  491. #pragma libcall GUIEnvBase SetGUIGadgetA 72 90803
  492. #pragma tagcall GUIEnvBase SetGUIGadget  72 90803
  493. #pragma libcall GUIEnvBase GetGUIGadget  78 10803
  494. #pragma libcall GUIEnvBase GUIGadgetActionA 7e 9802
  495. #pragma tagcall GUIEnvBase GUIGadgetAction  7e 9802
  496. #pragma libcall GUIEnvBase GUIRequestA 84 A09804
  497. #pragma tagcall GUIEnvBase GUIRequest  84 A09804
  498. #pragma libcall GUIEnvBase ShowGuideNodeA 8a BA9804
  499. #pragma tagcall GUIEnvBase ShowGuideNode  8a BA9804
  500. #pragma libcall GUIEnvBase GetCatStr 90 90803
  501. #pragma libcall GUIEnvBase GetLocStr 96 90803
  502.  
  503.  
  504. #endif /* LIBRARIES_GUIENV_H */
  505.